package org.forever.util
{
	/**
	 * （有向）图的顶点结构接口
	 *	无向图也可以看成是有向图，为此，只需将每条无向边替换为对称的一对有向边
	 */
	public interface Vertex
	{
		/**尚未被发现的顶点*/
		public static const UNDISCOVERED:int = 0;
		/**已被发现的顶点*/
		public static const DISCOVERED:int = 1;
		/**已访问过的顶点*/
		public static const VISITED:int = 2;
		
		/**返回当前顶点的信息*/
		 function getInfo():Object;
		/**将当前顶点的信息更新为x，并返回原先的信息*/
		 function setInfo(x:Object):Object;
		/**返回当前顶点的出度*/
		 function outDeg():int;
		 /**返回当前定点的入度*/
		 function inDeg():int;
		 /**返回当前定点所有入边的迭代器*/
		 function getInEdges():Iterator;
		 /**返回当前定点所有入边位置的迭代器*/
		 function inEdgePositions():Iterator;
		 /**返回当前定点所有出边的迭代器*/
		 function getOutEdges():Iterator;
		 /**返回当前定点所有出边位置的迭代器*/
		 function outEdgePositions():Iterator;
		/**取当前顶点在所属的图的顶点集V中的位置*/
		 function getVPosInV():Position;
		/**读取顶点的状态（DFS + BFS）*/
		 function getStatus():int;
		 /**设置顶点的状态（DFS + BFS）*/
		 function setStatus(s:int):int;
		/**读取顶点的时间标签（DFS）发现时的时刻*/
		 function getDStamp():int;
		 /**设置顶点的时间标签（DFS）*/
		 function setDStamp(s:int):int;
		 /**读取顶点的时间标签（DFS）结束时的时刻*/
		 function getFStamp():int;
		 /**设置顶点的时间标签（DFS）*/
		 function setFStamp(s:int):int;
		 /**读取顶点至起点的最短距离（BFS或BestFS）*/
		 function getDistance():int;
		 /**设置顶点至起点的最短距离（BFS或BestFS）*/
		 function setDistance(s:int):int;
		 /**读取顶点在的DFS、BFS、BestFS或MST树中的父亲*/
		 function getBFSParent():Vertex;
		 /**设置顶点在的DFS、BFS、BestFS或MST树中的父亲*/
		 function setBFSParent(s:Vertex):Vertex;
	}
}